<table class="table table-bordered">
    <thead>
        <tr>
            <th class="text-left" style="width: 20%">Key</th>
            <th class="text-left" style="width: 15%">Default</th>
            <th class="text-left" style="width: 10%">Type</th>
            <th class="text-left" style="width: 55%">Description</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><h5>python.fn-execution.arrow.batch.size</h5></td>
            <td style="word-wrap: break-word;">1000</td>
            <td>Integer</td>
            <td>The maximum number of elements to include in an arrow batch for Python user-defined function execution. The arrow batch size should not exceed the bundle size. Otherwise, the bundle size will be used as the arrow batch size.</td>
        </tr>
        <tr>
            <td><h5>python.fn-execution.buffer.memory.size</h5></td>
            <td style="word-wrap: break-word;">"15mb"</td>
            <td>String</td>
            <td>The amount of memory to be allocated by the input buffer and output buffer of a Python worker. The memory will be accounted as managed memory if the actual memory allocated to an operator is no less than the total memory of a Python worker. Otherwise, this configuration takes no effect.</td>
        </tr>
        <tr>
            <td><h5>python.fn-execution.bundle.size</h5></td>
            <td style="word-wrap: break-word;">1000</td>
            <td>Integer</td>
            <td>The maximum number of elements to include in a bundle for Python user-defined function execution. The elements are processed asynchronously. One bundle of elements are processed before processing the next bundle of elements. A larger value can improve the throughput, but at the cost of more memory usage and higher latency.</td>
        </tr>
        <tr>
            <td><h5>python.fn-execution.bundle.time</h5></td>
            <td style="word-wrap: break-word;">1000</td>
            <td>Long</td>
            <td>Sets the waiting timeout(in milliseconds) before processing a bundle for Python user-defined function execution. The timeout defines how long the elements of a bundle will be buffered before being processed. Lower timeouts lead to lower tail latencies, but may affect throughput.</td>
        </tr>
        <tr>
            <td><h5>python.fn-execution.framework.memory.size</h5></td>
            <td style="word-wrap: break-word;">"64mb"</td>
            <td>String</td>
            <td>The amount of memory to be allocated by the Python framework. The sum of the value of this configuration and "python.fn-execution.buffer.memory.size" represents the total memory of a Python worker. The memory will be accounted as managed memory if the actual memory allocated to an operator is no less than the total memory of a Python worker. Otherwise, this configuration takes no effect.</td>
        </tr>
    </tbody>
</table>
